feat: Edition-Verifikation — stille Auflagen-Verwechslung verhindern#81
Open
TillQuandel wants to merge 1 commit into
Open
feat: Edition-Verifikation — stille Auflagen-Verwechslung verhindern#81TillQuandel wants to merge 1 commit into
TillQuandel wants to merge 1 commit into
Conversation
Wurzel-Fix: Ein Kapitel-Extrakt trägt keine Impressum-Seite, die Pipeline leitet Jahr/Edition allein aus dem Dateinamen ab — ohne Abgleich gegen das Dokument. So zitiert sie still die falsche Auflage (z.B. Reimers „Wissensorganisation": KSS-6 2013 S.172 vs. KSS-7 2022 S.145, gleicher Autor, andere Seiten/DOI). Aufgefallen, weil das Kapitel in beiden Auflagen existiert. Layer 1 — ehrliches Scheitern (Pipeline): - is_edition_unverified(doi_verified, first_print_page): True bei Auszug (erste numerische Druckseite > 1 aus /PageLabels) OHNE DOI-Beleg. - source_status: "edition-unverified" + starkes Flag + NL-Framing; auto_write_decision blockt auto-vault (auch bei Score 5). - doi_verified nur bei echter CrossRef-Auflösung (nicht bloßem --doi, nicht Title-Match-Raten) → fail-closed. Layer 3 — DOI über Seitenbereich auflösen (Extraktions-Schritt): - resolve_chapter_doi/pick_chapter_doi: disambiguiert CrossRef-Treffer per Startseite (beweist die Auflage), fail-closed (genau 1 DOI-Treffer, sonst None). CLI: python -m generative.tools.resolve_chapter_doi. - Live verifiziert: 172→KSS-6-DOI, 145→KSS-7-DOI, Unsinn→None. Komposition: --doi pinnen (Layer 3) → doi_verified=True → Layer-1-Flag entfällt. Cross-Model-Review (Codex, 2 Runden): 3 Funde (fail-open bei --doi, pick_chapter_doi nicht fail-closed, KeyError ohne DOI) — alle gefixt + Re-Review bestätigt fail-closed. TDD, volle generative-Suite (636) grün. Gestackt auf fix/pagelabel-anchors (PR #79) — nutzt dessen _pdf_page_labels.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem (Wurzel)
Ein Kapitel-Extrakt trägt keine Impressum-Seite (ISBN/„N. Auflage"/Copyright stehen nur in der Titelei des Gesamtbands). Die Pipeline leitet Jahr/Edition deshalb allein aus dem Dateinamen ab (
<Autor> - <Jahr> - <Titel>.pdf, Filename-Jahr ist bewusst autoritativ) — ohne Abgleich gegen das Dokument. Folge: Sie zitiert still die falsche Auflage.Konkret aufgefallen: Reimers Kapitel „Wissensorganisation" existiert in KSS-6 (2013, Druckseite 172, DOI
…258264.172) und KSS-7 (2022, Druckseite 145, DOI…769043-013) — gleicher Autor, andere Seiten/DOI. Nichts in der Pipeline fängt eine Verwechslung; das einzige Signal war das schwache „kein DOI — nicht prüfbar".Fix (2 Layer, komponieren)
Layer 1 — ehrliches Scheitern (Pipeline):
is_edition_unverified(doi_verified, first_print_page)→ True bei Auszug (erste numerische Druckseite > 1 aus/PageLabels) ohne DOI-Beleg.source_status: "edition-unverified"+ starkes Flag + First-Person-NL-Framing;auto_write_decisionblockt auto-vault (auch bei Score 5).doi_verifiednur bei echter CrossRef-Auflösung (nicht bloßem--doi, nicht Title-Match-Raten) → fail-closed.Layer 3 — DOI über Seitenbereich auflösen (Extraktions-Schritt):
resolve_chapter_doi/pick_chapter_doi: disambiguiert CrossRef-Treffer per Startseite (beweist die Auflage), fail-closed (genau 1 DOI-Treffer, sonst None). CLI:python -m generative.tools.resolve_chapter_doi --title … --author … --start-page … --year ….Komposition:
--doipinnen (Layer 3) →doi_verified=True→ Layer-1-Flag entfällt automatisch.Verifikation
--doi,pick_chapter_doinicht fail-closed, KeyError ohne DOI) — alle gefixt, Re-Review bestätigt fail-closed.Hinweis
Gestackt auf
fix/pagelabel-anchors(#79) — nutzt dessen_pdf_page_labels. Basis nach #79-Merge auf master umstellen.🤖 Generated with Claude Code